package reflect.reflect_constructor;

import org.junit.Test;

import java.lang.reflect.Constructor;

public class TestStudent2 {
    @Test
    public void getDeclaredConstructor() throws Exception {
        // 第一步:获取类对象
        Class c = Student.class;
        // 第二步:定位无参构造器
        Constructor constructor = c.getConstructor();
        // 获取构造器的名字和参数的个数 只能拿public权限的
        System.out.println(constructor.getName() + "====>" + constructor.getParameterCount());

       // 如果遇到了私有的构造器,可以暴力反射
        constructor.setAccessible(true); // 权限打开
        Student o = (Student)constructor.newInstance();
        System.out.println(o);

        // 定位有参构造器
        // 获取构造器的名字和参数的个数 只能拿public权限的
        Constructor constructor1 = c.getConstructor(String.class,int.class);
        System.out.println(constructor1.getName() + "====>" + constructor1.getParameterCount());

        Student s = (Student) constructor1.newInstance("奈奈子", 10);
        System.out.println(s);
    }
}
